package com.gewei.dao;

import com.github.pagehelper.Page;
import com.gewei.pojo.CheckGroup;
import java.util.List;
import java.util.Map;

/**
 * 预约管理-检查组管理持久层 Dao 接口
 *  本项目是基于 MyBatis 的 Mapper 动态代理技术实现持久层操作，
 *  故只需要提供接口和 Mapper 映射文件，无须提供实现类。
 *
 * @author gewei
 */
public interface CheckGroupDao {

    /**
     * 新增检查组
     *
     * @param checkGroup
     */
    void add(CheckGroup checkGroup);

    /**
     * 建立检查组和检查项的多对多关系
     *
     * @param map
     */
    void setCheckGroupAndCheckItem(Map map);

    /**
     * 分页查询检查组（用了分页插件，所以用 Page 对象）
     *
     * @param queryString
     * @return
     */
    Page<CheckGroup> selectByCondition(String queryString);

    /**
     * 查询检查组
     *
     * @param id
     * @return
     */
    CheckGroup findById(Integer id);

    /**
     * 查询检查组的所有检查项
     *
     * @param id
     * @return
     */
    List<Integer> findCheckItemIdsByCheckGroupId(Integer id);

    /**
     * 删除检查组
     *
     * @param id
     */
    void deleteById(Integer id);

    /**
     * 删除当前 id 检查组关联的检查项
     *
     * @param id
     */
    void deleteAssociation(Integer id);

    /**
     * 编辑检查组
     *
     * @param checkGroup
     */
    void edit(CheckGroup checkGroup);

    /**
     * 查询所有检查组
     *
     * @return
     */
    List<CheckGroup> findAll();

    /**
     * 根据体检套餐 id 查询关联的检查组详情
     *
     * @return
     */
    CheckGroup findCheckGroupById();

}